\chapter{Power Supply Drivers}
\label{sec:powersupply-drivers}

This chapter describes all of the available drivers for power supplies.

% TODO: demo driver

\section{Alientek}

\begin{tabularx}{16cm}{lllX}
\thickhline
\textbf{Device Family} & \textbf{Driver} & \textbf{Transport} & \textbf{Notes} \\
\thickhline
DP100 & alientek\_dp & hid & \\
\thickhline
\end{tabularx}

\subsection{alientek\_dp}

This driver works on Alientek DP100 mini Digital Power Supply.

Path for connection (vendorId:productId) is: 2e3c:af01.

\section{GW Instek}

\begin{tabularx}{16cm}{lllX}
\thickhline
\textbf{Device Family} & \textbf{Driver} & \textbf{Transport} & \textbf{Notes} \\
\thickhline
GPD-X303S series & gwinstek\_gpdx303s & uart & 9600 Baud default. Tested with GPD-3303S. No support for tracking modes yet.\\
\thickhline
\end{tabularx}

\subsection{gwinstek\_gpdx303s}

Supported models should include GPD-2303S, GPD-3303S, GPD-4303S, and GPD-3303D.

\section{Kuaiqu}

\begin{tabularx}{16cm}{lllX}
\thickhline
\textbf{Device Family} & \textbf{Driver} & \textbf{Transport} & \textbf{Notes} \\
\thickhline
Kuaiqu SSPS-S series & kuaiqu\_psu & uart & \\
Kuaiqu SPPS*D series & kuaiqu\_psu & uart & \\
Kuaiqu SPPS-D series & kuaiqu\_psu & uart & Tested on a Kuaiqu SPPS-D3010-232\\
Kuaiqu R-SPPS series & kuaiqu\_psu & uart & \\
\thickhline
\end{tabularx}

\subsection{kuaiqu\_psu}

This driver supports all Kuaiqu programmable PSUs, including SSPS-S, SPPS*D, SPPS-D and R-SPPS series.

It has been tested on a Kuaiqu SPPS-D3010-232.

\section{Riden}

\begin{tabularx}{16cm}{lllX}
\thickhline
\textbf{Device Family} & \textbf{Driver} & \textbf{Transport} & \textbf{Notes} \\
\thickhline
Riden RD series & riden\_rd & uart & Tested on a Riden RD6006\\
\thickhline
\end{tabularx}

\subsection{kuaiqu\_psu}

This driver supports all Riden RD series DC Power Supplies.

It has been tested on a Riden RD6006.

\section{Rigol}

\begin{tabularx}{16cm}{lllX}
\thickhline
\textbf{Device Family} & \textbf{Driver} & \textbf{Transport} & \textbf{Notes} \\
\thickhline
DP832, DP832A & rigol\_dp8xx & uart, usbtmc, lan & No support for tracking modes yet.\\
\thickhline
\end{tabularx}

\subsection{rigol\_dp8xx}

This driver supports the DP832 and DP832A.

\section{Rohde \& Schwarz}

\begin{tabularx}{16cm}{lllX}
\thickhline
\textbf{Device Family} & \textbf{Driver} & \textbf{Transport} & \textbf{Notes} \\
\thickhline
HMC804x series & rs\_hmc804x & uart, usbtmc, lan & No support for tracking modes yet.\\
\thickhline
\end{tabularx}

\subsection{rs\_hmc804x}

This driver should support the HMC8041, HMC8042, and HMC8043 but has only been tested on the HMC8042.

\section{Siglent}

\begin{tabularx}{16cm}{lllX}
\thickhline
\textbf{Device Family} & \textbf{Driver} & \textbf{Transport} & \textbf{Notes} \\
\thickhline
SPD3303X series & siglent\_spd & lan & Tested with SPD3303X-E\\
\thickhline
\end{tabularx}

\subsection{siglent\_spd}

Supported models should include SPD3303X, SPD3303X-E.

NOTE: Channel 3 of the SPD3303x series does not support software voltage/current adjustment. It has a fixed current
limit of 3.2A, and output voltage selectable to 2.5, 3.3, or 5V via a mechanical switch. While channel 3 can be turned
on and off under software control, there is no readback capability whatsoever for channel 3 in the SCPI API.

As a result - regardless of actual hardware state - the driver will report channel 3 as being in constant voltage mode.
Additionally, the driver will report channel 3 as being off until it is turned on by software. Once the output has been
turned on, the driver will track the state and report a correct on/off state as long as no front panel control buttons
are touched.

\section{Sinilink}

\begin{tabularx}{16cm}{lllX}
\thickhline
\textbf{Device Family} & \textbf{Driver} & \textbf{Transport} & \textbf{Notes} \\
\thickhline
XY series & siniLink & uart & Tested on a XYS3580\\
\thickhline
\end{tabularx}

\subsection{siniLink}

This driver should be compatible with most Sinilink XY series powersupplies.
